package adv2;

/**
 * @author oldliu
 * @since 1.0
 */
public class ShuziDu {
    public static String int2chineseNum(long src) { // 定义一个公共的静态方法，名为int2chineseNum，输入参数为整数src，返回值为字符串

        final String num[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; // 定义一个字符串数组，存储0-9的中文数字
        final String unit[] = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千","万亿","十", "百", "千","亿亿","十", "百", "千"}; //
        // 定义一个字符串数组，存储中文数字的单位（如十，百，千等）
        String dst = ""; // 定义一个字符串变量dst，用于存储转换后的中文数字
        int count = 0; // 定义一个整型变量count，用于记录当前转换的位数

        while (src > 0) { // 当src大于0时，循环执行以下代码
            dst = (num[(int)(src % 10)] + unit[count]) + dst; // 从src中取最后一位数字，并获取对应的中文数字和单位，加到dst的前面
            src = src / 10; // 将src除以10，去掉最后一位数字
            count++; // count加1，表示转换了下一位数字
        }
        System.out.printf("src=%s\n",dst);

         return dst.replaceAll("零[千百十]", "零").replaceAll("零+万", "万")
                 .replaceAll("零+亿", "亿")
                 .replaceAll("亿亿万亿", "亿亿零")
                 .replaceAll("万亿亿", "万亿零")
                 .replaceAll("万亿万", "万亿零")
                 .replaceAll("亿万", "亿零")


                 .replaceAll("零+", "零").replaceAll("零$", "")
                 .replaceAll("零.+零", "零")
                 .replaceAll("[百千]?一十", "十")
;

    }

    public static void main(String[] args) { // 定义主方法，程序的入口点
        System.out.println(int2chineseNum(12000000015L)); // 调用int2chineseNum方法，将整数1118189189转换为中文数字并打印出来
        System.out.println(int2chineseNum(15)); // 调用int2chineseNum方法，将整数1118189189转换为中文数字并打印出来
        System.out.println(int2chineseNum(10000000000000015L)); // 调用int2chineseNum方法，将整数1118189189转换为中文数字并打印出来
    }
}
